const abi = [
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'address',
        name: 'previousAdmin',
        type: 'address'
      },
      {
        indexed: false,
        internalType: 'address',
        name: 'newAdmin',
        type: 'address'
      }
    ],
    name: 'AdminChanged',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'address',
        name: 'beacon',
        type: 'address'
      }
    ],
    name: 'BeaconUpgraded',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'uint256',
        name: 'offerId',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'refundValue',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'refundFee',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'address',
        name: 'doer',
        type: 'address'
      }
    ],
    name: 'CancelOffer',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'uint256',
        name: 'orderId',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'address',
        name: 'doer',
        type: 'address'
      }
    ],
    name: 'CancelOrder',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'uint256',
        name: 'offerId',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'refundAmount',
        type: 'uint256'
      }
    ],
    name: 'CloseOffer',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'uint8',
        name: 'version',
        type: 'uint8'
      }
    ],
    name: 'Initialized',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'uint256',
        name: 'id',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint8',
        name: 'offerType',
        type: 'uint8'
      },
      {
        indexed: false,
        internalType: 'bytes32',
        name: 'tokenId',
        type: 'bytes32'
      },
      {
        indexed: false,
        internalType: 'address',
        name: 'exToken',
        type: 'address'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'amount',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'value',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'collateral',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'bool',
        name: 'fullMatch',
        type: 'bool'
      },
      {
        indexed: false,
        internalType: 'address',
        name: 'doer',
        type: 'address'
      }
    ],
    name: 'NewOffer',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'uint256',
        name: 'id',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'offerId',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'amount',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'address',
        name: 'seller',
        type: 'address'
      },
      {
        indexed: false,
        internalType: 'address',
        name: 'buyer',
        type: 'address'
      }
    ],
    name: 'NewOrder',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'bytes32',
        name: 'tokenId',
        type: 'bytes32'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'settleDuration',
        type: 'uint256'
      }
    ],
    name: 'NewToken',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'bytes32',
        name: 'role',
        type: 'bytes32'
      },
      {
        indexed: true,
        internalType: 'bytes32',
        name: 'previousAdminRole',
        type: 'bytes32'
      },
      {
        indexed: true,
        internalType: 'bytes32',
        name: 'newAdminRole',
        type: 'bytes32'
      }
    ],
    name: 'RoleAdminChanged',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'bytes32',
        name: 'role',
        type: 'bytes32'
      },
      {
        indexed: true,
        internalType: 'address',
        name: 'account',
        type: 'address'
      },
      {
        indexed: true,
        internalType: 'address',
        name: 'sender',
        type: 'address'
      }
    ],
    name: 'RoleGranted',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'bytes32',
        name: 'role',
        type: 'bytes32'
      },
      {
        indexed: true,
        internalType: 'address',
        name: 'account',
        type: 'address'
      },
      {
        indexed: true,
        internalType: 'address',
        name: 'sender',
        type: 'address'
      }
    ],
    name: 'RoleRevoked',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'uint256',
        name: 'orderId',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'bytes32',
        name: 'hash',
        type: 'bytes32'
      },
      {
        indexed: false,
        internalType: 'address',
        name: 'doer',
        type: 'address'
      }
    ],
    name: 'Settle2Steps',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'uint256',
        name: 'orderId',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'value',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'fee',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'address',
        name: 'doer',
        type: 'address'
      }
    ],
    name: 'SettleCancelled',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'uint256',
        name: 'orderId',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'value',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'fee',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'address',
        name: 'doer',
        type: 'address'
      }
    ],
    name: 'SettleFilled',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'bytes32',
        name: 'tokenId',
        type: 'bytes32'
      }
    ],
    name: 'TokenForceCancelSettlePhase',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'bytes32',
        name: 'tokenId',
        type: 'bytes32'
      },
      {
        indexed: false,
        internalType: 'address',
        name: 'token',
        type: 'address'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'settleRate',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'settleTime',
        type: 'uint256'
      }
    ],
    name: 'TokenToSettlePhase',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'address[]',
        name: 'tokens',
        type: 'address[]'
      },
      {
        indexed: false,
        internalType: 'bool',
        name: 'isAccepted',
        type: 'bool'
      }
    ],
    name: 'UpdateAcceptedTokens',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'address',
        name: 'oldFeeWallet',
        type: 'address'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'oldFeeSettle',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'oldFeeRefund',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'oldPledgeRate',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'address',
        name: 'newFeeWallet',
        type: 'address'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'newFeeSettle',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'newFeeRefund',
        type: 'uint256'
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'newPledgeRate',
        type: 'uint256'
      }
    ],
    name: 'UpdateConfig',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'bytes32',
        name: 'tokenId',
        type: 'bytes32'
      },
      {
        indexed: false,
        internalType: 'uint48',
        name: 'oldValue',
        type: 'uint48'
      },
      {
        indexed: false,
        internalType: 'uint48',
        name: 'newValue',
        type: 'uint48'
      }
    ],
    name: 'UpdateTokenSettleDuration',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'bytes32',
        name: 'tokenId',
        type: 'bytes32'
      },
      {
        indexed: false,
        internalType: 'uint8',
        name: 'oldValue',
        type: 'uint8'
      },
      {
        indexed: false,
        internalType: 'uint8',
        name: 'newValue',
        type: 'uint8'
      }
    ],
    name: 'UpdateTokenStatus',
    type: 'event'
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'address',
        name: 'implementation',
        type: 'address'
      }
    ],
    name: 'Upgraded',
    type: 'event'
  },
  {
    inputs: [],
    name: 'DEFAULT_ADMIN_ROLE',
    outputs: [
      {
        internalType: 'bytes32',
        name: '',
        type: 'bytes32'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [],
    name: 'OPERATOR_ROLE',
    outputs: [
      {
        internalType: 'bytes32',
        name: '',
        type: 'bytes32'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [],
    name: 'UPGRADER_ROLE',
    outputs: [
      {
        internalType: 'bytes32',
        name: '',
        type: 'bytes32'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'offerId',
        type: 'uint256'
      }
    ],
    name: 'cancelOffer',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256[]',
        name: 'offerIds',
        type: 'uint256[]'
      }
    ],
    name: 'cancelOffers',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [],
    name: 'config',
    outputs: [
      {
        components: [
          {
            internalType: 'uint256',
            name: 'pledgeRate',
            type: 'uint256'
          },
          {
            internalType: 'uint256',
            name: 'feeRefund',
            type: 'uint256'
          },
          {
            internalType: 'uint256',
            name: 'feeSettle',
            type: 'uint256'
          },
          {
            internalType: 'address',
            name: 'feeWallet',
            type: 'address'
          }
        ],
        internalType: 'struct Config',
        name: '',
        type: 'tuple'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'bytes32',
        name: 'tokenId',
        type: 'bytes32'
      },
      {
        internalType: 'uint48',
        name: 'settleDuration',
        type: 'uint48'
      }
    ],
    name: 'createToken',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'offerId',
        type: 'uint256'
      },
      {
        internalType: 'uint256',
        name: 'amount',
        type: 'uint256'
      }
    ],
    name: 'fillOffer',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'offerId',
        type: 'uint256'
      },
      {
        internalType: 'uint256',
        name: 'amount',
        type: 'uint256'
      }
    ],
    name: 'fillOfferETH',
    outputs: [],
    stateMutability: 'payable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'orderId',
        type: 'uint256'
      }
    ],
    name: 'forceCancelOrder',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256[]',
        name: 'orderIds',
        type: 'uint256[]'
      }
    ],
    name: 'forceCancelOrders',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'bytes32',
        name: 'role',
        type: 'bytes32'
      }
    ],
    name: 'getRoleAdmin',
    outputs: [
      {
        internalType: 'bytes32',
        name: '',
        type: 'bytes32'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'bytes32',
        name: 'role',
        type: 'bytes32'
      },
      {
        internalType: 'address',
        name: 'account',
        type: 'address'
      }
    ],
    name: 'grantRole',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'bytes32',
        name: 'role',
        type: 'bytes32'
      },
      {
        internalType: 'address',
        name: 'account',
        type: 'address'
      }
    ],
    name: 'hasRole',
    outputs: [
      {
        internalType: 'bool',
        name: '',
        type: 'bool'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: 'adminAddress',
        type: 'address'
      },
      {
        internalType: 'address',
        name: 'feeWalletAddress',
        type: 'address'
      }
    ],
    name: 'initialize',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: 'token',
        type: 'address'
      }
    ],
    name: 'isAcceptedToken',
    outputs: [
      {
        internalType: 'bool',
        name: '',
        type: 'bool'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'offerId',
        type: 'uint256'
      }
    ],
    name: 'isBuyOffer',
    outputs: [
      {
        internalType: 'bool',
        name: '',
        type: 'bool'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'offerId',
        type: 'uint256'
      }
    ],
    name: 'isSellOffer',
    outputs: [
      {
        internalType: 'bool',
        name: '',
        type: 'bool'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [],
    name: 'lastOfferId',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [],
    name: 'lastOrderId',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint8',
        name: 'offerType',
        type: 'uint8'
      },
      {
        internalType: 'bytes32',
        name: 'tokenId',
        type: 'bytes32'
      },
      {
        internalType: 'uint256',
        name: 'amount',
        type: 'uint256'
      },
      {
        internalType: 'uint256',
        name: 'value',
        type: 'uint256'
      },
      {
        internalType: 'address',
        name: 'exToken',
        type: 'address'
      },
      {
        internalType: 'bool',
        name: 'fullMatch',
        type: 'bool'
      }
    ],
    name: 'newOffer',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint8',
        name: 'offerType',
        type: 'uint8'
      },
      {
        internalType: 'bytes32',
        name: 'tokenId',
        type: 'bytes32'
      },
      {
        internalType: 'uint256',
        name: 'amount',
        type: 'uint256'
      },
      {
        internalType: 'uint256',
        name: 'value',
        type: 'uint256'
      },
      {
        internalType: 'bool',
        name: 'fullMatch',
        type: 'bool'
      }
    ],
    name: 'newOfferETH',
    outputs: [],
    stateMutability: 'payable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'offerId',
        type: 'uint256'
      }
    ],
    name: 'offerAmount',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'offerId',
        type: 'uint256'
      }
    ],
    name: 'offerAmountAvailable',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'offerId',
        type: 'uint256'
      }
    ],
    name: 'offerExToken',
    outputs: [
      {
        internalType: 'address',
        name: '',
        type: 'address'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'offerId',
        type: 'uint256'
      }
    ],
    name: 'offerStatus',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'offerId',
        type: 'uint256'
      }
    ],
    name: 'offerValue',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'id',
        type: 'uint256'
      }
    ],
    name: 'offers',
    outputs: [
      {
        components: [
          {
            internalType: 'uint8',
            name: 'offerType',
            type: 'uint8'
          },
          {
            internalType: 'bytes32',
            name: 'tokenId',
            type: 'bytes32'
          },
          {
            internalType: 'address',
            name: 'exToken',
            type: 'address'
          },
          {
            internalType: 'uint256',
            name: 'amount',
            type: 'uint256'
          },
          {
            internalType: 'uint256',
            name: 'value',
            type: 'uint256'
          },
          {
            internalType: 'uint256',
            name: 'collateral',
            type: 'uint256'
          },
          {
            internalType: 'uint256',
            name: 'filledAmount',
            type: 'uint256'
          },
          {
            internalType: 'uint8',
            name: 'status',
            type: 'uint8'
          },
          {
            internalType: 'address',
            name: 'offeredBy',
            type: 'address'
          },
          {
            internalType: 'bool',
            name: 'fullMatch',
            type: 'bool'
          }
        ],
        internalType: 'struct Offer',
        name: '',
        type: 'tuple'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'orderId',
        type: 'uint256'
      }
    ],
    name: 'orderStatus',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'id',
        type: 'uint256'
      }
    ],
    name: 'orders',
    outputs: [
      {
        components: [
          {
            internalType: 'uint256',
            name: 'offerId',
            type: 'uint256'
          },
          {
            internalType: 'uint256',
            name: 'amount',
            type: 'uint256'
          },
          {
            internalType: 'address',
            name: 'seller',
            type: 'address'
          },
          {
            internalType: 'address',
            name: 'buyer',
            type: 'address'
          },
          {
            internalType: 'uint8',
            name: 'status',
            type: 'uint8'
          }
        ],
        internalType: 'struct Order',
        name: '',
        type: 'tuple'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [],
    name: 'proxiableUUID',
    outputs: [
      {
        internalType: 'bytes32',
        name: '',
        type: 'bytes32'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'bytes32',
        name: 'role',
        type: 'bytes32'
      },
      {
        internalType: 'address',
        name: 'account',
        type: 'address'
      }
    ],
    name: 'renounceRole',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'bytes32',
        name: 'role',
        type: 'bytes32'
      },
      {
        internalType: 'address',
        name: 'account',
        type: 'address'
      }
    ],
    name: 'revokeRole',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'address[]',
        name: 'tokenAddresses',
        type: 'address[]'
      },
      {
        internalType: 'bool',
        name: 'isAccepted',
        type: 'bool'
      }
    ],
    name: 'setAcceptedTokens',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'orderId',
        type: 'uint256'
      },
      {
        internalType: 'bytes32',
        name: 'hash',
        type: 'bytes32'
      }
    ],
    name: 'settle2Steps',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256[]',
        name: 'orderIds',
        type: 'uint256[]'
      },
      {
        internalType: 'bytes32[]',
        name: 'hashes',
        type: 'bytes32[]'
      }
    ],
    name: 'settle2StepsBatch',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'orderId',
        type: 'uint256'
      }
    ],
    name: 'settleCancelled',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256[]',
        name: 'orderIds',
        type: 'uint256[]'
      }
    ],
    name: 'settleCancelleds',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'orderId',
        type: 'uint256'
      }
    ],
    name: 'settleFilled',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'uint256[]',
        name: 'orderIds',
        type: 'uint256[]'
      }
    ],
    name: 'settleFilleds',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'bytes4',
        name: 'interfaceId',
        type: 'bytes4'
      }
    ],
    name: 'supportsInterface',
    outputs: [
      {
        internalType: 'bool',
        name: '',
        type: 'bool'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'bytes32',
        name: 'tokenId',
        type: 'bytes32'
      }
    ],
    name: 'tokenForceCancelSettlePhase',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'bytes32',
        name: 'tokenId',
        type: 'bytes32'
      },
      {
        internalType: 'address',
        name: 'tokenAddress',
        type: 'address'
      },
      {
        internalType: 'uint152',
        name: 'settleRate',
        type: 'uint152'
      }
    ],
    name: 'tokenToSettlePhase',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'bytes32',
        name: 'tokenId',
        type: 'bytes32'
      }
    ],
    name: 'tokenToggleActivation',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'bytes32',
        name: 'tokenId',
        type: 'bytes32'
      }
    ],
    name: 'tokens',
    outputs: [
      {
        components: [
          {
            internalType: 'address',
            name: 'token',
            type: 'address'
          },
          {
            internalType: 'uint48',
            name: 'settleTime',
            type: 'uint48'
          },
          {
            internalType: 'uint48',
            name: 'settleDuration',
            type: 'uint48'
          },
          {
            internalType: 'uint152',
            name: 'settleRate',
            type: 'uint152'
          },
          {
            internalType: 'uint8',
            name: 'status',
            type: 'uint8'
          }
        ],
        internalType: 'struct Token',
        name: '',
        type: 'tuple'
      }
    ],
    stateMutability: 'view',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: 'feeWallet_',
        type: 'address'
      },
      {
        internalType: 'uint256',
        name: 'feeSettle_',
        type: 'uint256'
      },
      {
        internalType: 'uint256',
        name: 'feeRefund_',
        type: 'uint256'
      },
      {
        internalType: 'uint256',
        name: 'pledgeRate_',
        type: 'uint256'
      }
    ],
    name: 'updateConfig',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'bytes32',
        name: 'tokenId',
        type: 'bytes32'
      },
      {
        internalType: 'uint48',
        name: 'newValue',
        type: 'uint48'
      }
    ],
    name: 'updateSettleDuration',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: 'newImplementation',
        type: 'address'
      }
    ],
    name: 'upgradeTo',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: 'newImplementation',
        type: 'address'
      },
      {
        internalType: 'bytes',
        name: 'data',
        type: 'bytes'
      }
    ],
    name: 'upgradeToAndCall',
    outputs: [],
    stateMutability: 'payable',
    type: 'function'
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: '_token',
        type: 'address'
      },
      {
        internalType: 'address',
        name: '_to',
        type: 'address'
      }
    ],
    name: 'withdrawStuckToken',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function'
  }
];
export default abi;
